<?php
/*
* +----------------------------------------------------------------------
* | SF 综合验证授权系统
* +----------------------------------------------------------------------
* | Quotes [ 花开的再灿烂，也有凋谢的一天，致我们过去的青春 ]
* +----------------------------------------------------------------------
* | Author: 陌上花开 <2129876388@qq.com>
* +----------------------------------------------------------------------
* | Date: 2022年1月19日 18:48:32
* +----------------------------------------------------------------------
*/
namespace app\common\controller;

use app\common\model\system\Admin;
use think\App;
use think\Exception;
use think\facade\Session;
use think\facade\View;

/**
 * 系统中台控制器基类
 *
 * @author 陌上花开
 * @since 2022-01-19
 */
class Backend extends CommonBase
{
    // 模型
    protected $model;
    // 服务
    protected $service;
    // 校验
    protected $validate;
    // 站长ID
    protected $adminId;
    // 站长登录信息
    protected $adminInfo;
    // 网络请求
    protected $param;

    /**
     * 初始化
     */
    public function initialize()
    {
        parent::initialize(); // TODO: Change the autogenerated stub
        // 初始化登录信息
        $this->initLogin();
        

    }

    /**
     * 校验登录
     * @author 陌上花开
     * @since: 2022/01/19
     */
    public function initLogin()
    {
        try{
            $adminId = session('adminId');
            $sign = session('adminSign');
            $this->adminId = $adminId;

            // 登录用户信息
            $adminModel = new \app\admin\model\Admin();
            $adminInfo = $adminModel->getInfo($adminId);
            if(!empty($adminId) && $sign != data_auth_sign($adminInfo['username'].$adminInfo['password'].sf_password_hash())){
                session('adminId',null);
                session('adminSign',null);
                throw new Exception('管理员登录信息已过期，请刷新界面重新登录！');
            }
            $this->adminInfo = $adminInfo;
            // 数据绑定
            View::assign("adminId", $this->adminId);
            View::assign("adminInfo", $this->adminInfo);
        }catch (\Exception $e){
            $this->logOut();
            if(IS_POST){
                exit(json_encode(message($e->getMessage(), false)));
            }
            exit($this->render('/public/error', ['msg' => $e->getMessage()]));
        }
    }

    /**
     * 退出登录
     * @author 陌上花开
     * @since: 2022/01/19
     */
    public function logOut()
    {
        $content = [
            'Title' => '退出登录',
            'Result' => 'success'
        ];
        event('ActionLog', $content);
        Session::delete('adminId');
        Session::delete('adminSign');
        Session::save();
        return message('退出登录成功', true);
    }

    /**
     * 判断站长是否登录
     * @return bool
     */
    public function isAdminLogin()
    {
        // 用户未登录返回 false
        if (empty(session('adminId'))) {
            return false;
        }
        // 用户已登录返回 true
        return true;
    }
    
//    /**
//     * 获取价格模板列表
//     * @return mixed
//     * @author 陌上花开
//     * @date 2022/1/25
//     */
//    public function getAuthTemplateList()
//    {
//        $authTemplateModel = new \app\admin\model\AuthTemplateModel();
//        $result = $authTemplateModel->getAllList();
//        return $result;
//    }
//
//    /**
//     * 获取权限模板列表
//     * @return mixed
//     * @author 陌上花开
//     * @date 2022/1/25
//     */
//    public function getPowerTemplateList()
//    {
//        $powerTemplateModel = new \app\admin\model\PowerTemplateModel();
//        $result = $powerTemplateModel->getAllList();
//        return $result;
//    }

    /**
     * 获取模式列表
     * @return mixed
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function getCheckTypeList()
    {
        try{
            $checkTypeModel = new \app\admin\model\CheckTypeModel();
            $result = $checkTypeModel->getCheckTypeList();
            return message('获取列表成功！', true, ['data' => $result]);
        }catch (\Exception $e){
            return message($e->getMessage(), false);
        }
    }

    /**
     * 获取价格列表
     * @return mixed
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function getAuthPriceList()
    {
        try{
            if(IS_POST){
                $appid = intval(input('post.appid'));
                if(empty($appid)){
                    return message("APPID不能为空！" ,false);
                }
                $authPriceModel = new \app\admin\model\AuthPriceModel();
                $appModel = new \app\admin\model\AppModel();
                $appInfo = $appModel->getInfo($appid);
                $tid = intval($appInfo['auth_template']);
                $result = $authPriceModel->getAuthPriceList($tid);
                return message('获取成功！' ,true, ['data' => $result]);
            }
        }catch (\Exception $e){
            return message('获取失败！'.$e->getMessage() ,false);
        }
    }
    
    /**
     * 获取App列表
     * @return array
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function getAppList()
    {
        try{
            $appModel = new \app\admin\model\AppModel();
            $result = $appModel->getAllList();
            return message('获取列表成功！', true, ['data' => $result]);
        }catch (\Exception $e){
            return message($e->getMessage(), false);
        }
    }

    /**
     * 获取权限信息
     * @return array
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function getPowerPriceInfo($id)
    {
        if(empty($id)) return false;
        $powerPriceModel = new \app\admin\model\PowerPriceModel();
        try{
            $result = $powerPriceModel->getInfo($id);
            if(!$result) return false;
            return $result;
        }catch (\Exception $e){
            return false;
        }

    }

    /**
     * 获取权限列表
     * @return array
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function getPowerList(){
        $post = request()->post();
        $tid = !empty($post['tid'])?intval($post['tid']):null;
        $appid = !empty($post['appid'])?intval($post['appid']):null;
        if(empty($tid) && empty($appid)){
            return message('TID或APPID不能为空' ,false);
        }
        try{
            if(!empty($appid)){
                $appModel = new \app\admin\model\AppModel();
                $appInfo = $appModel->getInfo($appid);
                if(!$appInfo){
                    return message('平台不存在此应用' ,false);
                }
                $tid = $appInfo['power_template'];
            }
            $powerPriceModel = new \app\admin\model\PowerPriceModel();
            $result = $powerPriceModel->getPowerList($tid);
            if(!$result){
                return message('获取权限列表失败' ,false);
            }
            return message('获取列表成功！', true, ['data' => $result]);
        } catch (\Exception $e) {
            return message('获取失败！'.$e->getMessage() ,false);
        }
    }

    /**
     * 添加或编辑入口
     * @return mixed
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function edit()
    {
        if (IS_POST) {
            //try{
                return $this->service->edit();
            //}catch (\Exception $e){
               // return message($e->getMessage() ,false);
            //}
        }
    }

    /**
     * 删除单条记录
     * @return array
     * @author 陌上花开
     * @date 2022/1/25
     */
    public function drop()
    {
        if (IS_POST) {
            $id = input('post.id');
            try{
                $info = $this->service->getInfo($id);
                if ($info) {
                    $this->service->drop($id);
                    return message('删除成功！', true);
                }
                return message('不存在该ID！', false);
            }catch (\Exception $e){
                return message($e->getMessage(), false);
            }
        }
    }

    /**
     * 批量删除记录
     * @return array
     * @author 陌上花开
     * @date 2019/2/25
     */
    public function batchDrop()
    {
        if (IS_POST) {
            try{
                $ids = explode(',', input('post.id'));
                //批量删除
                $num = 0;
                foreach ($ids as $key => $val) {
                    $res = $this->service->drop($val);
                    if ($res !== false) {
                        $num++;
                    }
                }
                return message('本次共选择' . count($ids) . '个条数据,删除' . $num . '个');
            }catch (\Exception $e){
                return message($e->getMessage(), false);
            }
        }
    }

    /**
     * 列表
     * @return mixed
     * @author 陌上花开
     * @date 2022/1/12
     */
    public function list()
    {
        if (IS_POST) {
            try{
                $result = $this->service->list();
                return message('获取列表成功！', true, ['data' => $result]);
            }catch (\Exception $e){
                return message($e->getMessage(), false, ['data' => []]);
            }
        }
        try{
            return $this->render();
        }catch (\Exception $e){
            return $this->render('public/error', ['msg' => $e->getMessage()]);
        }
    }

    /**
     * 设置状态
     * @return mixed
     * @author 陌上花开
     * @date 2022/1/12
     */
    public function setStatus()
    {
        if (IS_POST) {
            try{
                $this->service->setStatus();
                return message('更改状态成功！', true);
            }catch (\Exception $e){
                return message($e->getMessage(), false);
            }
        }
    }

}